package org.pidan.basic.designModel.agency.DongTai;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

/**
 * {@code @description}: 每次生成动态代理类对象时,实现了InvocationHandler接口的调用处理器对象
 * {@code @author}: huangyuxin
 * {@code @date}: 2023-11-16
 */


public class InvocationHandlerImpl implements InvocationHandler {

    // 这其实业务实现类对象，用来调用具体的业务方法
    private Object object;

    // 通过构造函数传入目标对象
    public InvocationHandlerImpl(Object o) {
        this.object = o;
    }

    //动态代理实际运行的代理方法
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {

        System.out.println("动态代理调用开始处理");
        //下面invoke()方法是以反射的方式来创建对象，第一个参数是要创建的对象，第二个是构成方法的参数，由第二个参数来决定创建对象使用哪个构造方法
        Object invoke = method.invoke(object, args);
        System.out.println("动态代理调用结束处理");
        return invoke;
    }
}
